home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / cat3 / libblas / gemm.z / gemm
Encoding:
Text File  |  1998-10-30  |  19.1 KB  |  331 lines

  1.  
  2.  
  3.  
  4. ____GGGGEEEEMMMMMMMM((((3333FFFF))))                                                            ____GGGGEEEEMMMMMMMM((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      dgemm, sgemm, zgemm, cgemm - BLAS level three Matrix Product
  10.  
  11.  
  12. FFFFOOOORRRRTTTTRRRRAAAANNNN 77777777 SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee ddddggggeeeemmmmmmmm(((( ttttrrrraaaannnnssssaaaa,,,,ttttrrrraaaannnnssssbbbb,,,,mmmm,,,,nnnn,,,,kkkk,,,,aaaallllpppphhhhaaaa,,,,aaaa,,,,llllddddaaaa,,,,bbbb,,,,llllddddbbbb,,,,bbbbeeeettttaaaa,,,,cccc,,,,llllddddcccc ))))
  14.            cccchhhhaaaarrrraaaacccctttteeeerrrr****1111        ttttrrrraaaannnnssssaaaa,,,, ttttrrrraaaannnnssssbbbb
  15.            iiiinnnntttteeeeggggeeeerrrr            mmmm,,,, nnnn,,,, kkkk,,,, llllddddaaaa,,,, llllddddbbbb,,,, llllddddcccc
  16.            ddddoooouuuubbbblllleeee pppprrrreeeecccciiiissssiiiioooonnnn   aaaallllpppphhhhaaaa,,,, bbbbeeeettttaaaa
  17.            ddddoooouuuubbbblllleeee pppprrrreeeecccciiiissssiiiioooonnnn   aaaa(((( llllddddaaaa,,,,****)))),,,, bbbb((((llllddddbbbb,,,,****)))),,,, cccc((((llllddddcccc,,,,****))))
  18.  
  19.      ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee ssssggggeeeemmmmmmmm(((( ttttrrrraaaannnnssssaaaa,,,,ttttrrrraaaannnnssssbbbb,,,,mmmm,,,,nnnn,,,,kkkk,,,,aaaallllpppphhhhaaaa,,,,aaaa,,,,llllddddaaaa,,,,bbbb,,,,llllddddbbbb,,,,bbbbeeeettttaaaa,,,,cccc,,,,llllddddcccc ))))
  20.            cccchhhhaaaarrrraaaacccctttteeeerrrr****1111        ttttrrrraaaannnnssssaaaa,,,, ttttrrrraaaannnnssssbbbb
  21.            iiiinnnntttteeeeggggeeeerrrr            mmmm,,,, nnnn,,,, kkkk,,,, llllddddaaaa,,,, llllddddbbbb,,,, llllddddcccc
  22.            rrrreeeeaaaallll               aaaallllpppphhhhaaaa,,,, bbbbeeeettttaaaa
  23.            rrrreeeeaaaallll               aaaa(((( llllddddaaaa,,,,****)))),,,, bbbb((((llllddddbbbb,,,,****)))),,,, cccc((((llllddddcccc,,,,****))))
  24.  
  25.      ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee zzzzggggeeeemmmmmmmm(((( ttttrrrraaaannnnssssaaaa,,,,ttttrrrraaaannnnssssbbbb,,,,mmmm,,,,nnnn,,,,kkkk,,,,aaaallllpppphhhhaaaa,,,,aaaa,,,,llllddddaaaa,,,,bbbb,,,,llllddddbbbb,,,,bbbbeeeettttaaaa,,,,cccc,,,,llllddddcccc ))))
  26.            cccchhhhaaaarrrraaaacccctttteeeerrrr****1111        ttttrrrraaaannnnssssaaaa,,,, ttttrrrraaaannnnssssbbbb
  27.            iiiinnnntttteeeeggggeeeerrrr            mmmm,,,, nnnn,,,, kkkk,,,, llllddddaaaa,,,, llllddddbbbb,,,, llllddddcccc
  28.            ddddoooouuuubbbblllleeee ccccoooommmmpppplllleeeexxxx     aaaallllpppphhhhaaaa,,,, bbbbeeeettttaaaa
  29.            ddddoooouuuubbbblllleeee ccccoooommmmpppplllleeeexxxx     aaaa(((( llllddddaaaa,,,,****)))),,,, bbbb((((llllddddbbbb,,,,****)))),,,, cccc((((llllddddcccc,,,,****))))
  30.  
  31.      ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee ccccggggeeeemmmmmmmm(((( ttttrrrraaaannnnssssaaaa,,,,ttttrrrraaaannnnssssbbbb,,,,mmmm,,,,nnnn,,,,kkkk,,,,aaaallllpppphhhhaaaa,,,,aaaa,,,,llllddddaaaa,,,,bbbb,,,,llllddddbbbb,,,,bbbbeeeettttaaaa,,,,cccc,,,,llllddddcccc ))))
  32.            cccchhhhaaaarrrraaaacccctttteeeerrrr****1111        ttttrrrraaaannnnssssaaaa,,,, ttttrrrraaaannnnssssbbbb
  33.            iiiinnnntttteeeeggggeeeerrrr            mmmm,,,, nnnn,,,, kkkk,,,, llllddddaaaa,,,, llllddddbbbb,,,, llllddddcccc
  34.            ccccoooommmmpppplllleeeexxxx            aaaallllpppphhhhaaaa,,,, bbbbeeeettttaaaa
  35.            ccccoooommmmpppplllleeeexxxx            aaaa(((( llllddddaaaa,,,,****)))),,,, bbbb((((llllddddbbbb,,,,****)))),,,, cccc((((llllddddcccc,,,,****))))
  36.  
  37.  
  38. CCCC SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  39.      vvvvooooiiiidddd ddddggggeeeemmmmmmmm(((( ttttrrrraaaannnnssssaaaa,,,,ttttrrrraaaannnnssssbbbb,,,,mmmm,,,,nnnn,,,,kkkk,,,,aaaallllpppphhhhaaaa,,,,aaaa,,,,llllddddaaaa,,,,bbbb,,,,llllddddbbbb,,,,bbbbeeeettttaaaa,,,,cccc,,,,llllddddcccc ))))
  40.            MMMMaaaattttrrrriiiixxxxTTTTrrrraaaannnnssssppppoooosssseeee       ttttrrrraaaannnnssssaaaa,,,, ttttrrrraaaannnnssssbbbb;;;;
  41.            IIIInnnntttteeeeggggeeeerrrr               mmmm,,,, nnnn,,,, kkkk,,,, llllddddaaaa,,,, llllddddbbbb,,,, llllddddcccc;;;;
  42.            ddddoooouuuubbbblllleeee                aaaallllpppphhhhaaaa,,,, bbbbeeeettttaaaa;;;;
  43.            ddddoooouuuubbbblllleeee                ((((****aaaa))))[[[[llllddddaaaa****kkkkaaaa]]]],,,, ((((****bbbb))))[[[[llllddddaaaa****nnnn]]]],,,, ((((****cccc))))[[[[llllddddaaaa****kkkkbbbb]]]];;;;
  44.  
  45.      vvvvooooiiiidddd ssssggggeeeemmmmmmmm(((( ttttrrrraaaannnnssssaaaa,,,,ttttrrrraaaannnnssssbbbb,,,,mmmm,,,,nnnn,,,,kkkk,,,,aaaallllpppphhhhaaaa,,,,aaaa,,,,llllddddaaaa,,,,bbbb,,,,llllddddbbbb,,,,bbbbeeeettttaaaa,,,,cccc,,,,llllddddcccc ))))
  46.            MMMMaaaattttrrrriiiixxxxTTTTrrrraaaannnnssssppppoooosssseeee       ttttrrrraaaannnnssssaaaa,,,, ttttrrrraaaannnnssssbbbb;;;;
  47.            IIIInnnntttteeeeggggeeeerrrr               mmmm,,,, nnnn,,,, kkkk,,,, llllddddaaaa,,,, llllddddbbbb,,,, llllddddcccc;;;;
  48.            ffffllllooooaaaatttt                 aaaallllpppphhhhaaaa,,,, bbbbeeeettttaaaa;;;;
  49.            ffffllllooooaaaatttt                 ((((****aaaa))))[[[[llllddddaaaa****kkkkaaaa]]]],,,, ((((****bbbb))))[[[[llllddddaaaa****nnnn]]]],,,, ((((****cccc))))[[[[llllddddaaaa****kkkkbbbb]]]];;;;
  50.  
  51.      vvvvooooiiiidddd zzzzggggeeeemmmmmmmm(((( ttttrrrraaaannnnssssaaaa,,,,ttttrrrraaaannnnssssbbbb,,,,mmmm,,,,nnnn,,,,kkkk,,,,aaaallllpppphhhhaaaa,,,,aaaa,,,,llllddddaaaa,,,,bbbb,,,,llllddddbbbb,,,,bbbbeeeettttaaaa,,,,cccc,,,,llllddddcccc ))))
  52.            MMMMaaaattttrrrriiiixxxxTTTTrrrraaaannnnssssppppoooosssseeee       ttttrrrraaaannnnssssaaaa,,,, ttttrrrraaaannnnssssbbbb;;;;
  53.            IIIInnnntttteeeeggggeeeerrrr               mmmm,,,, nnnn,,,, kkkk,,,, llllddddaaaa,,,, llllddddbbbb,,,, llllddddcccc;;;;
  54.            ZZZZoooommmmpppplllleeeexxxx               aaaallllpppphhhhaaaa,,,, bbbbeeeettttaaaa;;;;
  55.            ZZZZoooommmmpppplllleeeexxxx               ((((****aaaa))))[[[[llllddddaaaa****kkkkaaaa]]]],,,, ((((****bbbb))))[[[[llllddddaaaa****nnnn]]]],,,, ((((****cccc))))[[[[llllddddaaaa****kkkkbbbb]]]];;;;
  56.  
  57.      vvvvooooiiiidddd ccccggggeeeemmmmmmmm(((( ttttrrrraaaannnnssssaaaa,,,,ttttrrrraaaannnnssssbbbb,,,,mmmm,,,,nnnn,,,,kkkk,,,,aaaallllpppphhhhaaaa,,,,aaaa,,,,llllddddaaaa,,,,bbbb,,,,llllddddbbbb,,,,bbbbeeeettttaaaa,,,,cccc,,,,llllddddcccc ))))
  58.            MMMMaaaattttrrrriiiixxxxTTTTrrrraaaannnnssssppppoooosssseeee       ttttrrrraaaannnnssssaaaa,,,, ttttrrrraaaannnnssssbbbb;;;;
  59.            IIIInnnntttteeeeggggeeeerrrr               mmmm,,,, nnnn,,,, kkkk,,,, llllddddaaaa,,,, llllddddbbbb,,,, llllddddcccc;;;;
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ____GGGGEEEEMMMMMMMM((((3333FFFF))))                                                            ____GGGGEEEEMMMMMMMM((((3333FFFF))))
  71.  
  72.  
  73.  
  74.            CCCCoooommmmpppplllleeeexxxx               aaaallllpppphhhhaaaa,,,, bbbbeeeettttaaaa;;;;
  75.            CCCCoooommmmpppplllleeeexxxx               ((((****aaaa))))[[[[llllddddaaaa****kkkkaaaa]]]],,,, ((((****bbbb))))[[[[llllddddaaaa****nnnn]]]],,,, ((((****cccc))))[[[[llllddddaaaa****kkkkbbbb]]]];;;;
  76.  
  77.  
  78.  
  79.  
  80. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  81.      ddddggggeeeemmmmmmmm, ssssggggeeeemmmmmmmm, zzzzggggeeeemmmmmmmm and ccccggggeeeemmmmmmmm perform one of the matrix-matrix operations
  82.  
  83.                     C := alpha*op( A )*op( B ) + beta*C,
  84.  
  85.      where  op( X ) is one of
  86.  
  87.                     op( X ) = X   or   op( X ) = X',
  88.  
  89.      alpha and beta are scalars, and A, B and C are matrices, with op( A ) an
  90.      m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
  91.  
  92.  
  93. PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS
  94.      ttttrrrraaaannnnssssaaaa  On entry, ttttrrrraaaannnnssssaaaa specifies the form of op( A ) to be used in the
  95.              matrix multiplication as follows:
  96.  
  97.                   FFFFOOOORRRRTTTTRRRRAAAANNNN
  98.                   transa = 'N' or 'n',     op( A ) = A.
  99.                   transa = 'T' or 't',     op( A ) = A'.
  100.                   transa = 'C' or 'c',     op( A ) = conjg( A').
  101.  
  102.                   CCCC
  103.                   transa = NoTranspose          op( A ) = A.
  104.                   transa = Transpose            op( A ) = A'.
  105.                   transa = ConjugateTranspose   op( A ) = conjg( A').
  106.  
  107.              Unchanged on exit.
  108.  
  109.      ttttrrrraaaannnnssssbbbb  On entry, ttttrrrraaaannnnssssbbbb specifies the form of op( B ) to be used in the
  110.              matrix multiplication as follows:
  111.  
  112.                   FFFFOOOORRRRTTTTRRRRAAAANNNN
  113.                   transb = 'N' or 'n',     op( B ) = B.
  114.                   transb = 'T' or 't',     op( B ) = B'.
  115.                   transb = 'C' or 'c',     op( B ) = conjg( B' ).
  116.  
  117.                   CCCC
  118.                   transb = NoTranspose          op( B ) = B.
  119.                   transb = Transpose            op( B ) = B'.
  120.                   transb = ConjugateTranspose   op( B ) = conjg( B' ).
  121.  
  122.              Unchanged on exit.
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. ____GGGGEEEEMMMMMMMM((((3333FFFF))))                                                            ____GGGGEEEEMMMMMMMM((((3333FFFF))))
  137.  
  138.  
  139.  
  140.      mmmm       On entry, mmmm specifies the number of rows of the matrix op( A )
  141.              and of the matrix C.  mmmm must be at least zero.
  142.              Unchanged on exit.
  143.  
  144.      nnnn       On entry, nnnn specifies the number of columns of the matrix op( B )
  145.              and the number of columns of the matrix C. nnnn must be at least
  146.              zero.
  147.              Unchanged on exit.
  148.  
  149.      kkkk       On entry, kkkk specifies the number of columns of the matrix op( A )
  150.              and the number of rows of the matrix op( B ).  kkkk must be at least
  151.              zero.
  152.              Unchanged on exit.
  153.  
  154.      aaaallllpppphhhhaaaa   On entry, aaaallllpppphhhhaaaa specifies the scalar alpha.
  155.              Unchanged on exit.
  156.  
  157.      aaaa       An array containing the matrix A.
  158.  
  159.              FFFFOOOORRRRTTTTRRRRAAAANNNN
  160.              Array of dimension ( lda, ka ).
  161.  
  162.              CCCC
  163.              A pointer to an array of size lda*ka.
  164.              See note below about array storage convention for C.
  165.  
  166.              kkkkaaaa is kkkk when transa = 'N' or 'n' or NoTranspose and is mmmm
  167.              otherwise.  Before entry with transa = 'N' or 'n' or NoTranspose,
  168.              the leading m by k part of the array aaaa must contain the matrix A,
  169.              otherwise the leading  k by m  part of the array aaaa must contain
  170.              the matrix A.
  171.  
  172.              Unchanged on exit.
  173.  
  174.      llllddddaaaa     On entry, llllddddaaaa specifies the first dimension of aaaa as declared in
  175.              the calling (sub) program. When  transa = 'N' or 'n' or
  176.              NoTranspose, then lda must be at least max( 1, m ), otherwise lda
  177.              must be at least  max( 1, k ).
  178.              Unchanged on exit.
  179.  
  180.      bbbb       An array containing the matrix B.
  181.  
  182.              FFFFOOOORRRRTTTTRRRRAAAANNNN
  183.              An array of dimension ( ldb, kb ).
  184.  
  185.              CCCC
  186.              A pointer to an array of size ldb*kb.
  187.              See note below about array storage convention for C.
  188.  
  189.              kkkkbbbb is nnnn when transb = 'N' or 'n' or NoTranspose, and is k
  190.              otherwise. Before entry with transb = 'N' or 'n' or NoTranspose,
  191.              the leading k by n part of the array bbbb must contain the matrix B,
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. ____GGGGEEEEMMMMMMMM((((3333FFFF))))                                                            ____GGGGEEEEMMMMMMMM((((3333FFFF))))
  203.  
  204.  
  205.  
  206.              otherwise the leading n by k part of the array bbbb must contain the
  207.              matrix B.
  208.  
  209.              Unchanged on exit.
  210.  
  211.      llllddddbbbb     On entry, llllddddbbbb specifies the first dimension of bbbb as declared in
  212.              the calling (sub)program. When  transb = 'N' or 'n' or
  213.              NoTranspose then ldb must be at least  max( 1, k ), otherwise ldb
  214.              must be at least  max( 1, n ).
  215.              Unchanged on exit.
  216.  
  217.      bbbbeeeettttaaaa    On entry, bbbbeeeettttaaaa specifies the scalar beta.  When bbbbeeeettttaaaa is supplied
  218.              as zero then cccc need not be set on input.
  219.              Unchanged on exit.
  220.  
  221.      cccc       An array containing the matrix C.
  222.  
  223.              FFFFOOOORRRRTTTTRRRRAAAANNNN
  224.              An array of dimension ( ldc, n ).
  225.  
  226.              CCCC
  227.              A pointer to an array of size ldc*n.
  228.              See note below about array storage convention for C.
  229.  
  230.              Before entry, the leading m by n part of the array cccc must contain
  231.              the matrix C, except when beta is zero, in which case cccc need not
  232.              be set on entry.
  233.  
  234.              On exit, the array cccc is overwritten by the m by n matrix
  235.  
  236.                        ( alpha*op( A )*op( B ) + beta*C ).
  237.  
  238.      llllddddcccc     On entry, llllddddcccc specifies the first dimension of cccc as declared in
  239.              the calling (sub) program. llllddddcccc must be at least max( 1, m ).
  240.              Unchanged on exit.
  241.  
  242.  
  243. CCCC AAAARRRRRRRRAAAAYYYY SSSSTTTTOOOORRRRAAAAGGGGEEEE CCCCOOOONNNNVVVVEEEENNNNTTTTIIIIOOOONNNN
  244.        The matrices  are assumed  to be stored in a  oooonnnneeee ddddiiiimmmmeeeennnnssssiiiioooonnnnaaaallll CCCC aaaarrrrrrrraaaayyyy
  245.        in an analogous fashion as a Fortran array (column major). Therefore,
  246.        the element  A(i+1,j)  of matrix A  is stored  immediately  after the
  247.        element  A(i,j), while  A(i,j+1) is lda  elements apart from  A(i,j).
  248.        The element A(i,j) of the matrix can be accessed directly by reference
  249.        to  a[ (j-1)*lda + (i-1) ].
  250.  
  251.  
  252. AAAAUUUUTTTTHHHHOOOORRRRSSSS
  253.           Jack Dongarra, Argonne National Laboratory.
  254.           Iain Duff, AERE Harwell.
  255.           Jeremy Du Croz, Numerical Algorithms Group Ltd.
  256.           Sven Hammarling, Numerical Algorithms Group Ltd.
  257.  
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. ____GGGGEEEEMMMMMMMM((((3333FFFF))))                                                            ____GGGGEEEEMMMMMMMM((((3333FFFF))))
  269.  
  270.  
  271.  
  272. TTTTUUUUNNNNIIIINNNNGGGG
  273.           Optimized and parallelized for SGI R3000, R4x00 and R8000 platforms.
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.